/*
类似于LeetCode 54，但又有区别，LeetCode上是 m行n列，而这里是 n行n列(如果是 m行n列 就不能用该方法，因为循环圈数不对)
给一个 n行n列 的矩阵
输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出：[1,2,3,6,9,8,7,4,5]
解释：
        1  2  3
        4  5  6
        7  8  9
    顺时针旋转
*/
#include<bits/stdc++.h>
using namespace std;
    int generateMatrix(int matrix[][3],int n) {
        //vector<vector<int>> res(n,vector<int>(n,0));
        vector<int> ans;
		int startx=0,starty=0;
		int loop=n/2;
		int mid=n/2;
		//int count=1;
		int offset=1;
		int i,j;
		while(loop--){
			i=startx,j=starty;
			for(j=starty;j<starty+n-offset;j++){
				//res[startx][j]=count++;
				ans.push_back(matrix[startx][j]);
			}
			for(i=startx;i<startx+n-offset;i++){
				//res[i][j]=count++;
				ans.push_back(matrix[i][j]);
			}
			for(;j>starty;j--){
				//res[i][j]=count++;
				ans.push_back(matrix[i][j]);
			}
			for(;i>startx;i--){
				//res[i][j]=count++;
				ans.push_back(matrix[i][j]);
			}
			startx++;
			starty++;
			offset+=2;
		} 
		if(n%2){
			//res[mid][mid]=count;
			ans.push_back(matrix[mid][mid]); 
		}
		//return ans;
		for(int k=0;k<ans.size();k++)
			cout<<ans[k]<<" ";
    }
    
int main(){
	int a[3][3]={
		1,2,3,4,5,6,7,8,9
	};
	generateMatrix(a,3);
}
/*
注意点：
    当二维数组作为形参传入时，必须要指明列是多少，要不然会报错
*/